#include <stdio.h>
#include <stdlib.h>

// FILE 结构体 和 FILE * 指针
// 通过 fopen 打开一个文件，返回一个 FILE * 指针，
// 以后，我们所有对于文件的操作，即操作 FILE * 指针 pf
// Windows 的 *pf 用 句柄 表示
int main()
{
    FILE * pf = fopen("data.txt","w");
    for (char ch = 'a'; ch  <= 'z'; ch++)
    {
        fputc(ch,pf);
    }
    // fclose 主动刷新缓存
    fclose(pf);
//    printf("Hello World!\n");
    return 0;
}


//// r 只读的方式打开，如果文件不存在，则报错，文件不可写
//int main()
//{
//    FILE * pf = fopen("a.txt","r");
//    if(pf == NULL)
//    {
//        printf("open error\n");
//        exit (-1);
//    }
//    if(fputc('a',pf) == EOF)
//    {
//        printf("write error\n");
//    }
//    fputc('a',pf);
//    fputc('a',pf);
//    fputc('a',pf);
////    printf("Hello World!\n");
//    return 0;
//}

//// w 如果文件不存在，则创建。如果文件存在，则清空。文件不可读
//int main()
//{
//    FILE * pf = fopen("b.txt","w");
//    if(pf == NULL)
//    {
//        printf("open error\n");
//        exit (-1);
//    }
//    if(fputc('a',pf) == EOF)
//    {
//        printf("write error\n");
//    }
//    fputc('a',pf);
//    fputc('a',pf);
//    fputc('a',pf);

//    rewind(pf);
//    char ch = fgetc(pf);
//    if(ch == EOF)
//    {
//        printf("Read error\n");
//    }
//    return 0;
//}

// a 如果文件不存在，则创建。如果文件存在，则追加写。文件不可读
//int main()
//{
//    FILE * pf = fopen("c.txt","a");
//    if(pf == NULL)
//    {
//        printf("open error\n");
//        exit (-1);
//    }

//    fputs("zzzzzzzzzz",pf);

//    rewind(pf);
//    char ch = fgetc(pf);
//    if(ch == EOF)
//    {
//        printf("Read error\n");
//    }
//    return 0;
//}

// r+ 可读可写不可创建
// w+ 可读可写可创建
// a+ 可读可写可创建
// Windows b 二进制文件
// r/ w / a + b
// Windows 读写二进制文件需要 + b
// Linux 不区分文本文件和二进制文件


